package com.rfsp.common.util;

import java.util.HashMap;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class SmsUtil {

	public static String sendSms(String phoneNumbers, String content) {
		String info = null;
		try{
			HttpClient httpclient = new HttpClient();
//			http://gd.ums86.com:8899/sms/Api/Send.do   老地址 3.5.0规范中规定的地址
//			http://sms.api.ums86.com:8899/sms/Api/Send.do   新地址 3.6.0规范中规定的地址
			
			PostMethod post = new PostMethod("http://sms.api.ums86.com:8899/sms/Api/Send.do");//
			post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"gbk");
			post.addParameter("SpCode", "221193");//企业编号  221193
			post.addParameter("LoginName", "tjzzrz");//用户名称  tjzzrz
			post.addParameter("Password", "crcmir2015");//用户密码  crcmir2015
			post.addParameter("MessageContent", content);//短信内容, 最大402个字或字符（短信内容要求的编码为gb2312或gbk）
			post.addParameter("UserNumber", phoneNumbers);//手机号码(多个号码用”,”分隔)，最多1000个号码
			post.addParameter("SerialNumber", "");//流水号，20位数字，唯一 （规则自定义,建议时间格式精确到毫秒）必填参数，不填后面无法使用回执接口。
			post.addParameter("ScheduleTime", "");//预约发送时间，格式:yyyyMMddHHmmss,如‘20090901010101’，立即发送请填空（预约时间要写当前时间5分钟之后的时间，若预约时间少于5分钟，则为立即发送。）
			post.addParameter("ExtendAccessNum", "");//接入号扩展号（默认不填，扩展号为数字，扩展位数由当前所配的接入号长度决定，整个接入号最长20位）
			post.addParameter("f", "1");//提交时检测方式 1 --- 提交号码中有效的号码仍正常发出短信，无效的号码在返回参数faillist中列出
									   //不为1 或该参数不存在 --- 提交号码中只要有无效的号码，那么所有的号码都不发出短信，所有的号码在返回参数faillist中列出

			httpclient.executeMethod(post);
			info = new String(post.getResponseBody(),"gbk");
			System.out.println(info);
		}catch (Exception e) {
			e.printStackTrace();
		}
		return info;

	}
	
	
	

	/**
	 * 委托Apache转发功能向联通发送短信
	 * @param smsContent
	 * @param phoneNumbers
	 * @return 
	 * 
	 * key-接收方邮件，value-邮件发送返回结果，会出现以下几种情况：
	 * 
	 * 1.result=0&description=发送短信成功&taskid=208913323929&faillist=&task_id=208913323929
     * 2.result=1&description=发送短信失败
     * 3.result=98&description=msgContent is null
     * 4.result=99&description=[异常信息]
     * 5.result=32&description=同一号码发送次数太多,一天内同一号码发送相同内容次数:2,当前次数为:2
	 * 
	 */
	public static HashMap<String,String> sendSmsFromForwarder(String sms_service_url, String smsContent, String... phoneNumbers) {
		String info = null;
		HashMap<String,String> result = new HashMap<String,String>();
		try{
		
			for(String phoneNumbersSingle : phoneNumbers){
				
				HttpClient httpclient = new HttpClient();
				PostMethod post = new PostMethod(sms_service_url);//Apche转发联通短信API地址
				post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"UTF-8");
				post.addParameter("phoneNumber", phoneNumbersSingle);//手机号码
				post.addParameter("msgContent", smsContent);//短信消息
				httpclient.executeMethod(post);
				
				info = new String(post.getResponseBody(),"UTF-8");
				result.put(phoneNumbersSingle, info);
				Thread.sleep(100l);
			}
			
		}catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}


}
